package cn.tedu;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

public class TestCollection {
    public static void main(String[] args) {
       //1,创建Collection相关的集合对象
       // Collection<Integer> c1=new ArrayList<Integer>();
        //Collection<Integer> c2=new ArrayList<>();
        //<Integer>是泛型,用来约束集合中的元素类型,不能是基本类型,必须是引用类型
        Collection<Integer> c=new ArrayList();
        //2.测试集合中的常用方法
        c.add(100);//向集合中添加元素
        c.add(200);
        c.add(300);
        c.add(400);
        c.add(500);
        System.out.println(c);//直接打印集合对象的名字,查看集合中存入的具体元素
       // c.clear();//清空集合
       // System.out.println(c);//[]
        System.out.println(c.hashCode());//获取集合对象对应的哈希玛值
        System.out.println(c.equals(200));//false,集合对象c与元素200不等
        System.out.println(c.contains(200));//true,判断集合是否包含指定元素200
        System.out.println(c.isEmpty());//false, 判断集合是否为空
       // System.out.println(c.remove(100));//删除集合中的指定元素100
        System.out.println(c);
        System.out.println(c.size());//4,获取集合中的元素个数


        Object[] array=c.toArray();//将指定集合转为数组Object[]
        System.out.println(Arrays.toString(array));


        Collection<Integer>c2=new ArrayList();
        c2.add(2);
        c2.add(4);
        c2.add(5);
        System.out.println(c2);

        c.addAll(c2);//将c2集合的所有元素添加到c集合中
        System.out.println(c);
        System.out.println(c2);

        System.out.println(c.containsAll(c2));//true,判断c集合是否包含c2集合的所有元素

        c.retainAll(c2);//保留c集合中那些也属于c2集合的元素
        System.out.println(c);

        c.removeAll(c2);//删除c集合中属于c2集合的所有元素
        System.out.println(c);//[]

        //集合的迭代/遍历
        /*迭代步骤：
         * 1.获取集合的迭代器 c.iterator();
         * 2.判断集合中是否有下一个可迭代的元素 it.hasNext()
         * 3.获取当前迭代到的元素 it.next()*/
        Iterator<Integer> it = c2.iterator();
        while (it.hasNext()){//如果有下一个元素,就执行循环
            System.out.println(it.next());//打印本轮循环到的元素
        }


    }


}
